#include <iostream>

#include "mprpcapplication.h"
#include "user.pb.h"

int main(int argc, char *argv[])
{
    // 程序启动，如果想要使用mprpc框架享受rpc服务，就必须要调用框架的初始化函数(只初始化一次)
    MprpcApplication::Init(argc, argv);

    // 演示远程调用发布的rpc方法
    fixbug::UserServiceRpc_Stub stub(new MprpcChannel());

    // rpc请求参数
    fixbug::LoginRequest req;
    std::cout << "请输入用户名密码!\n";
    std::string name, pwd;
    std::cin >> name >> pwd;
    req.set_name(name);
    req.set_pwd(pwd);

    // rpc响应参数
    fixbug::LoginResponse resp;

    // 调用rpc方法
    MprpcController *controller = new MprpcController();
    stub.Login(controller, &req, &resp, nullptr);

    // 一次rpc调用完成
    if (controller->Failed())
    {
        std::cout << controller->ErrorText() << std::endl;
    }
    else
    {
        if (0 == resp.result().errorno())
        {
            std::cout << "rpc login success: " << (resp.success() ? "Yes!" : "No!") << std::endl;
        }
        else
        {
            std::cout << "rpc login error: " << resp.result().errmsg() << std::endl;
        }
    }

    return 0;
}